@echo off
echo ================================
echo  Go Agent Windows 服务安装
echo ================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% == 0 (
    echo ✅ 管理员权限验证成功
) else (
    echo ❌ 需要管理员权限！请右键点击"以管理员身份运行"
    pause
    exit /b 1
)

echo.
set "SERVICE_NAME=GoAgent"
set "DISPLAY_NAME=Go Agent 系统监控代理"
set "CURRENT_PATH=%~dp0"
set "EXE_PATH=%CURRENT_PATH%go-agent.exe"

echo 服务配置:
echo - 服务名称: %SERVICE_NAME%
echo - 显示名称: %DISPLAY_NAME%
echo - 程序路径: %EXE_PATH%
echo - 启动类型: 自动启动
echo.

:: 检查服务是否已存在
sc query "%SERVICE_NAME%" >nul 2>&1
if %errorLevel% == 0 (
    echo ⚠️ 服务已存在，先停止并删除...
    sc stop "%SERVICE_NAME%"
    timeout /t 3 /nobreak >nul
    sc delete "%SERVICE_NAME%"
    timeout /t 2 /nobreak >nul
)

:: 创建服务
echo 正在创建服务...
sc create "%SERVICE_NAME%" ^
    binPath="%EXE_PATH%" ^
    DisplayName="%DISPLAY_NAME%" ^
    start=auto ^
    depend=Tcpip

if %errorLevel% == 0 (
    echo ✅ 服务创建成功！
    
    :: 设置服务描述
    sc description "%SERVICE_NAME%" "Go Agent 系统监控和指标采集代理，用于收集系统指标并上报到监控中心。"
    
    :: 启动服务
    echo.
    echo 正在启动服务...
    sc start "%SERVICE_NAME%"
    
    if %errorLevel% == 0 (
        echo ✅ 服务启动成功！
        echo.
        echo 服务管理命令:
        echo - 启动服务: sc start %SERVICE_NAME%
        echo - 停止服务: sc stop %SERVICE_NAME%  
        echo - 重启服务: sc stop %SERVICE_NAME% ^&^& sc start %SERVICE_NAME%
        echo - 删除服务: sc delete %SERVICE_NAME%
        echo.
        echo 可以在"服务管理器"(services.msc)中查看和管理服务
    ) else (
        echo ❌ 服务启动失败！错误代码: %errorLevel%
        echo 请检查程序路径和配置文件是否正确
    )
) else (
    echo ❌ 服务创建失败！错误代码: %errorLevel%
    echo 请检查程序路径是否正确
)

echo.
pause